1
迈向生产环境:部署思维
EvoClass-AI002第10讲
00:00

迈向生产环境:部署思维

本模块作为最后一步,弥合了在笔记本中实现高准确率的研究与可靠执行之间的差距。部署是将PyTorch模型转化为一个极简、自包含服务 的关键过程,该服务能够以低延迟高效地向终端用户返回预测结果,并具备高可用性

1. 生产环境思维的转变

Jupyter Notebook的探索性环境具有状态依赖且对生产环境而言十分脆弱。我们必须将代码从探索性脚本重构为结构化、模块化的组件,使其适用于并发请求处理、资源优化以及无缝集成到更大的系统中。

低延迟推理:持续将预测时间控制在目标阈值以下(例如 $50\text{ms}$),这对实时应用至关重要。
高可用性:设计服务时需确保其可靠、无状态,并能在发生故障后快速恢复。
可复现性:确保已部署的模型及其环境(依赖项、权重、配置)与经过验证的研究成果完全一致。
关注点:模型服务
我们不应当部署完整的训练脚本,而是部署一个极简的、自包含的服务封装。该服务仅需完成三项任务:加载优化后的模型文件,应用输入预处理,执行前向传播并返回预测结果。
inference_service.py
终端bash — uvicorn-service
> 已就绪。点击“模拟部署流程”开始运行。
>
构件检查器实时

模拟流程以查看已加载的生产环境构件。
问题 1
Jupyter Notebook 的哪项特性使其不适合用于生产环境部署?
它主要使用 Python 代码
它本质上是有状态且资源消耗密集的
它无法直接访问 GPU
问题 2
在部署前将 PyTorch 模型转换为 TorchScript 或 ONNX 的主要目的是什么?
优化以实现更快的 C++ 执行速度并减少对 Python 的依赖
防止模型被盗或逆向工程
自动处理输入数据的预处理
问题 3
在设计生产环境 API 时,应在何时加载模型权重?
一次性,在服务初始化时加载
在每次预测请求开始时加载
当首次收到服务请求时
挑战:定义最小化服务
规划低延迟服务的结构要求。
你需要部署一个复杂的图像分类模型(1 GB),该模型需要专门的图像预处理。它必须每秒处理 50 个请求。
步骤 1
为确保高吞吐量和低平均延迟,Python 脚本最需要进行的结构性改变是什么?
解答:
将代码库重构为独立模块(预处理、模型定义、推理运行器),并确保整个流程可打包用于容器化。
步骤 2
除了训练好的权重外,最少需要打包哪些“构件”?
解答:
用于预处理的确切代码/类定义,以及模型架构定义,需序列化并与权重一同打包。